home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / tbbs / prgsourc.zip / HOMES.ZIP / MATCH.PRG < prev    next >
Text File  |  1996-01-08  |  9KB  |  369 lines

  1. PARAMETERS md
  2. PRIVATE cnt
  3. aa[4] = pmax
  4. aa[5] = sub
  5. aa[6] = design
  6. aa[8] = smin
  7. aa[9] = lmin    
  8. aa[10] = bedmin
  9. aa[11] = batmin
  10. aa[13] = pump
  11. aa[14] = base
  12. aa[15] = fire
  13. aa[16] = gar
  14. aa[17] = air
  15. p = aa[4] * 1000
  16. STORE 0 TO m,m1,m2,m3
  17. SELECT a
  18. IF md = 3
  19.    COUNT TO cnt
  20. ELSE                                           && md = 4
  21.    SEEK larea
  22.    COUNT TO cnt WHILE area = larea   
  23. ENDIF   
  24. IF aa[5] = "..No Preference" 
  25.    IF aa[6] = "..Any          "  
  26.       IF md = 3        
  27.          COUNT TO m2 FOR price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  28.          GOTO TOP
  29.       ELSE
  30.          SEEK larea
  31.          COUNT TO m2 FOR price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11] WHILE area = larea
  32.          SEEK larea
  33.       ENDIF   
  34.       IF m2 = 0   
  35.          fld="these selections"
  36.          DO nmat
  37.          RETURN
  38.       ELSE
  39.          DECLARE amat2[m2]            && Check against price,size,
  40.          DO strtp
  41.          SET ORDER TO 2
  42.       ENDIF
  43.    ELSE                    && A design is specified
  44.       IF md = 3
  45.          COUNT TO m1 FOR design = aa[6] 
  46.          GOTO TOP
  47.       ELSE
  48.          SEEK larea
  49.          COUNT TO m1 FOR design = aa[6] WHILE area=larea   
  50.          SEEK larea
  51.       ENDIF   
  52.       IF m1 = 0
  53.          fld="this home design"
  54.          DO nmat
  55.          RETURN
  56.       ELSE
  57.          DECLARE amat1[m1] 
  58.          DO strtd 
  59.          SET ORDER TO 2
  60.       ENDIF
  61.       DECLARE amat2[m2]
  62.       x = 1              
  63.       m3 = 0                                         
  64.       SEEK amat1[x] 
  65.       DO WHILE x < m2                              
  66.          IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  67.             m3 = m3 + 1
  68.             amat2[m3] = pic1 
  69.          ENDIF
  70.          x = x + 1
  71.          SEEK amat1[x] 
  72.       ENDDO
  73.       IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  74.          m3 = m3 + 1
  75.          amat2[m3] = pic1 
  76.       ENDIF
  77.       RELEASE amat1
  78.    ENDIF
  79. ELSE                                      && A Subdivision is specified
  80.    IF md = 3        
  81.       COUNT TO m FOR sub = aa[5] 
  82.       GOTO TOP
  83.    ELSE                              && md = 4
  84.       SEEK larea
  85.       COUNT TO m FOR sub = aa[5] WHILE area=larea   
  86.       SEEK larea
  87.    ENDIF   
  88.    IF m = 0
  89.       fld="this subdivision"
  90.       DO nmat
  91.       RETURN
  92.    ELSE
  93.       DECLARE amat[m]   
  94.       DO strts
  95.    ENDIF
  96.    SET ORDER TO 2
  97.    IF aa[6] = "..Any          "  
  98.       DECLARE amat1[m1]
  99.       dummy = aCopy(amat,amat1)
  100.       RELEASE amat
  101.       m2=m1
  102.       DECLARE amat2[m2]
  103.       DO endp    
  104.    ELSE
  105.       DECLARE amat1[m1]
  106.       DO midd   
  107.       IF m2 = 0
  108.          fld="the design & Sub"
  109.          DO nmat
  110.          RETURN
  111.       ENDIF
  112.       DECLARE amat2[m2]
  113.       DO endp    
  114.    ENDIF
  115. ENDIF
  116. IF m3 = 0
  117.    fld="these selections"
  118.    DO nmat
  119.    RELEASE amat2
  120.    RETURN
  121. ENDIF
  122. y = 13
  123. DO WHILE y <= 17
  124.    IF aa[y] 
  125.       x = m3                                       
  126.       DO WHILE x > 0
  127.          SEEK amat2[x] 
  128.          DO CASE
  129.             CASE y = 13
  130.                  IF .NOT. heatpump
  131.                     dummy = aDel(amat2,x) 
  132.                     x = x - 1
  133.                     m3 = m3 - 1
  134.                     LOOP
  135.                   ENDIF
  136.             CASE y = 14
  137.                  IF .NOT. basement
  138.                     dummy = aDel(amat2,x) 
  139.                     x = x - 1
  140.                     m3 = m3 - 1
  141.                     LOOP
  142.                  ENDIF
  143.             CASE y = 15
  144.                  IF fireplace = 0 
  145.                     dummy = aDel(amat2,x) 
  146.                     x = x - 1
  147.                     m3 = m3 - 1
  148.                     LOOP
  149.                  ENDIF
  150.             CASE y = 16
  151.                  IF .NOT. garage
  152.                     dummy = aDel(amat2,x) 
  153.                     x = x - 1
  154.                     m3 = m3 - 1
  155.                     LOOP
  156.                  ENDIF
  157.             CASE y = 17
  158.                  IF .NOT. ac
  159.                     dummy = aDel(amat2,x) 
  160.                     x = x - 1
  161.                     m3 = m3 - 1
  162.                     LOOP
  163.                  ENDIF
  164.          ENDCASE
  165.          x = x - 1
  166.       ENDDO
  167.    ENDIF
  168.    IF m3 = 0
  169.       fld="these selections"
  170.       DO nmat
  171.       RELEASE amat2
  172.       RETURN
  173.    ENDIF
  174. ENDDO
  175. mat = m3
  176. DO ty
  177. DO BoxB WITH 5,52,8,72
  178. @ 6,53 SAY mat PICTURE "@ 999"
  179. IF mat = 1
  180.    @ 6,Col()+1 SAY "match found"
  181. ELSE
  182.    @ 6,Col()+1 SAY "matches found"
  183. ENDIF
  184. @ 7,54 SAY "View Now?"
  185. *******************
  186.         @ 20,5 SAY "Pausing for 8 seconds...."
  187.         key = InKey(8)
  188. *******************
  189. SET COLOR TO N/N
  190. @ 2,0 GET charin
  191. DO WHILE .T.
  192.    READ
  193.            DO CASE
  194.               CASE LastKey() = 89 .OR. LastKey() = 121   && `Y' or `y'
  195.                 DECLARE amat3[m3]
  196.                 dummy = aCopy(amat2,amat3,1,m3,1)
  197.                 RELEASE amat2
  198.                 EXIT
  199.               CASE LastKey() = 78 .OR. LastKey() = 110   && 'N' or 'n'
  200.                 RELEASE amat2
  201.                 RETURN
  202.               OTHERWISE
  203.                 LOOP
  204.            ENDCASE
  205.         ENDDO
  206.         x=1
  207.         SEEK amat3[1]
  208.         DO tt
  209.         IF m3 # 1
  210.                 DO ts
  211.         ENDIF
  212.         DO vscr
  213.         DO view
  214.         SET FORMAT TO fscr NOCLEAR  
  215.         SET COLOR TO N/N
  216.         @ 2,0 GET charin
  217.         DO WHILE .T.
  218.            READ 
  219.            DO CASE 
  220.               CASE Lastkey() = 27                   && <Esc>
  221.                    EXIT
  222.               CASE LastKey() = 5                    && <Up Arrow>
  223.                    IF x=1
  224.                       LOOP
  225.                    ENDIF
  226.                    x=x-1
  227.                    SEEK amat3[x]
  228.                    DO view
  229.                    LOOP
  230.               CASE LastKey() = 24                   && <Dn Arrow>
  231.                    IF x = m3
  232.                       LOOP
  233.                    ENDIF
  234.                    x=x+1
  235.                    SEEK amat3[x]
  236.                    DO view
  237.                    LOOP
  238.            
  239.               CASE LastKey() = 84 .OR. LastKey() = 116          && T or t
  240.                    DO tag WITH tg
  241.               OTHERWISE 
  242.                    LOOP
  243.            ENDCASE
  244.         ENDDO
  245.         RELEASE amat3
  246. RETURN
  247.  
  248. **************************************************
  249. PROCEDURE strts   
  250.  
  251. x=1
  252. DO WHILE x < cnt
  253.    IF sub = aa[5]
  254.       m1=m1+1
  255.       amat[m1] = pic1
  256.    ENDIF
  257.    x=x+1
  258.    SKIP
  259. ENDDO
  260. IF sub = aa[5]
  261.    m1=m1+1
  262.    amat[m1] = pic1
  263. ENDIF 
  264. RETURN           
  265.  
  266. **************************************************
  267. PROCEDURE strtd   
  268.  
  269. x=1
  270. m2=0
  271. DO WHILE x < cnt
  272.    IF design = aa[6]
  273.       m2=m2+1
  274.       amat1[m2] = pic1 
  275.    ENDIF
  276.    x=x+1
  277.    SKIP
  278. ENDDO
  279. IF design = aa[6]
  280.    m2=m2+1
  281.    amat1[m2] = pic1 
  282. ENDIF 
  283. RETURN
  284.  
  285.  
  286. **************************************************
  287. PROCEDURE strtp 
  288.  
  289. x = 1
  290. m3 = 0                                         
  291. DO WHILE x < cnt
  292.    IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  293.       m3 = m3 + 1
  294.       amat2[m3] = pic1 
  295.    ENDIF
  296.    x = x + 1
  297.    SKIP
  298. ENDDO
  299. IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  300.    m3=m3+1
  301.    amat2[m3] = pic1 
  302. ENDIF
  303. RETURN
  304.  
  305.  
  306. **************************************************
  307. PROCEDURE midd      
  308.  
  309. x=1                                       
  310. m2=0                                         
  311. SEEK amat[x] 
  312. DO WHILE x < m1
  313.    IF design = aa[6]
  314.       m2=m2+1
  315.       amat1[m2] = pic1 
  316.    ENDIF
  317.    x=x+1
  318.    SEEK amat[x] 
  319. ENDDO
  320. IF design = aa[6]
  321.    m2=m2+1
  322.    amat1[m2] = pic1 
  323. ENDIF
  324. RELEASE amat
  325. RETURN
  326.  
  327.  
  328.  
  329. **************************************************
  330. PROCEDURE nmat      
  331.  
  332. DO BoxB WITH 5,52,8,77
  333. @ 6,54 SAY "No matches were found" 
  334. @ 7,54 SAY "for"
  335. @ 7,Col()+1 SAY fld
  336. key = inkey(3)
  337. DO cls WITH 5,52,8,77
  338.  
  339. IF fld = "this subdivision" .OR. fld = "this home design"
  340.    DO BoxB WITH 5,53,8,74
  341.    @ 6,55 SAY "Press <Page Dn> to"
  342.    @ 7,55 SAY "use the pick list"
  343.    key = InKey(3)
  344.    DO cls WITH 5,53,8,74
  345. ENDIF
  346. SET COLOR TO W+/N
  347. RETURN
  348. **************************************************
  349. PROCEDURE endp   
  350.  
  351. x=1              
  352. m3=0                                         
  353. SEEK amat1[x] 
  354. DO WHILE x < m2                              
  355.    IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  356.       m3=m3+1
  357.       amat2[m3] = pic1 
  358.    ENDIF
  359.    x=x+1
  360.    SEEK amat1[x] 
  361. ENDDO
  362. IF price <= p .AND. size >= aa[8] .AND. acres >= aa[9] .AND. beds >= aa[10] .AND. baths >= aa[11]
  363.    m3=m3+1
  364.    amat2[m3] = pic1 
  365. ENDIF
  366. RELEASE amat1
  367. RETURN
  368.  
  369.